package composite.source;

/**
 * 在组合中表示叶节点对象 叶节点没有子节点
 *
 * 由于叶节点没有再增加分支和树叶，所以add和remove方法实现它没有意义
 * 但这样做可以消除叶节点和枝节点的对象在抽象层次的区别，具备完全一致的接口
 *
 * @author Chen Guang
 * @date 2019/4/18 0018 上午 9:20
 */
public class Leaf extends Component{

    public Leaf(String name) {
        super(name);
    }

    @Override
    public void add(Component c) {
        System.out.println("Cannot add to a leaf!");
    }

    @Override
    public void remove(Component c) {
        System.out.println("Cannot remove from a leaf!");
    }

    @Override
    public void display(int depth) {
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < depth; i++) {
            str.append("-");
        }
        str.append(super.getName());
        System.out.println(str);
    }
}
